/**
 * PhotoDetailActivity用于展示图片详情。
 * 当用户点击图片时，会启动该Activity以全屏展示图片。
 */
package com.sls.nzdapplication.ui.activity;

import android.content.ContentResolver;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;

import androidx.appcompat.app.AppCompatActivity;

import com.github.chrisbanes.photoview.PhotoView;
import com.sls.nzdapplication.R;

import java.io.File;
import java.io.InputStream;

public class PhotoDetailActivity extends AppCompatActivity {
    // 定义一个PhotoView，用于展示图片
    PhotoView photoView;

    /**
     * onCreate方法会在Activity创建时被调用。
     * 它负责设置Activity的内容视图，初始化PhotoView，并设置点击事件。
     *
     * @param savedInstanceState 如果Activity被系统重新创建，该参数包含了之前Activity结束时的状态。否则是null。
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置Activity的布局
        setContentView(R.layout.activity_photo_detail);
        
        // 初始化PhotoView并设置点击监听器，点击后返回上一Activity
        photoView = (PhotoView) findViewById(R.id.hitcard_photodetail_view);
        photoView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               // 点击图片后关闭当前Activity
               PhotoDetailActivity.this.finish();
            }
        });

        // 从Intent中获取图片文件路径
        String filepath = getIntent().getStringExtra("filePath");
        // 根据文件路径创建File对象
        File file = new File(filepath);
        // 从File对象创建Uri
        Uri uri = Uri.fromFile(file);
        // 获取ContentResolver
        ContentResolver cr = getApplication().getContentResolver();
        try {
            // 从Uri打开InputStream
            InputStream is = cr.openInputStream(uri);
            // 设置Bitmap解码选项
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize = 3; // 设置图片采样大小为1/3，减少内存使用
            // 从InputStream解码图片到Bitmap
            Bitmap bitmap = BitmapFactory.decodeStream(is, null, options);
            // 将Bitmap设置到PhotoView上显示
            photoView.setImageBitmap(bitmap);
        } catch(Exception e) {
            // 捕获并忽略解码或IO异常
        }
    }
}
